]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Improve 12/24 clock detection
authorDirk-Jan C. Binnema <djcb@djcbsoftware.nl>
Sat, 27 Feb 2010 08:29:13 +0000 (10:29 +0200)
committerColin Walters <walters@verbum.org>
Fri, 5 Mar 2010 17:02:18 +0000 (12:02 -0500)
The current check looks at whether there was some am/pm suffix in the
localized time; however in some cases (locales) that does not seem to
work. this version instead checks whether the localized versions of 05:00 and
17:00 start with the same two digits; if not, it's probably a 24h clock.

https://bugzilla.gnome.org/show_bug.cgi?id=603488

js/ui/panel.js

index d4f34301ff5e5305df6d5b938d30597a90bdc10c..6cce4c62e9d5142c783b43d9dbee63a9f44752a9 100644 (file)
@@ -616,15 +616,22 @@ Panel.prototype = {
             displayDate.setMinutes(displayDate.getMinutes() + 1);
             msecRemaining += 60000;
         }
-       /* If there is no am or pm, time format is 24h */
-       let isTime24h = displayDate.toLocaleFormat("x%p") == "x";
-       if (isTime24h) {
-         /* Translators: This is the time format used in 24-hour mode. */
-         this._clock.set_text(displayDate.toLocaleFormat(_("%a %R")));
-       } else {
-         /* Translators: This is a time format used for AM/PM. */
-         this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p")));
-       }
+
+        // if the locale representations of 05:00 and 17:00 do not
+        // start with the same 2 digits, it must be a 24h clock
+        let fiveAm = new Date();
+        fiveAm.setHours(5);
+        let fivePm = new Date();
+        fivePm.setHours(17);
+        let isTime24h = fiveAm.toLocaleFormat("%X").substr(0,2) !=
+                        fivePm.toLocaleFormat("%X").substr(0,2);
+        if (isTime24h) {
+            /* Translators: This is the time format used in 24-hour mode. */
+            this._clock.set_text(displayDate.toLocaleFormat(_("%a %R")));
+        } else {
+            /* Translators: This is a time format used for AM/PM. */
+            this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p")));
+        }
         Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock));
         return false;
     },